package org.zephyr.fastboot.example;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
import org.junit.Test;

/**
 * @Author: ZephyrGao
 * @Date: 2024/7/19 15:00
 * @Description:
 */
public class ShiroExampleTest {

    @Test
    public void shiroTest()  {
        // 创建Ini对象，加载配置文件
        Factory<SecurityManager>  factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        // 工厂创建安全管理器
        SecurityManager securityManager = factory.getInstance();
        // 设置安全管理器
        SecurityUtils.setSecurityManager(securityManager);
        // 获取subject
        Subject subject = SecurityUtils.getSubject();
        // 创建token
        UsernamePasswordToken token = new UsernamePasswordToken("admin", "secret");
        //  登录
        subject.login(token);
        // 验证是否登录成功
//        System.out.println("是否登录成功：" + subject.isAuthenticated());
//        String str = "Hello, World!";
//        byte[] bytes = str.getBytes(); // 使用平台默认字符集
//
//        // 打印字节数组的长度
//        System.out.println("Bytes length: " + bytes.length);
//        // 遍历字节数组，并以十六进制形式打印每个字节
//        for (byte b : bytes) {
//            // 由于 byte 是有符号的，并且 printf 需要无符号的 int，因此我们使用 & 0xFF 来确保只打印 byte 的无符号值
//            System.out.println("====" + b);
////            System.out.format("%02X ", b & 0xFF);
//        }
    }
}
